package com.lsl.builder_pattern.example.example2.builder;

import com.lsl.builder_pattern.example.example2.product.Actor;

/**
 * description:角色建造器：抽象建造者
 *
 * @author: liushengli
 * data: 2022/12/15
 */
//可以将Director和抽象建造者Builder进行合并，在Builder中提供逐步构建复杂产品对象的construct()方法。
//由于Builder类通常为抽象类，因此可以将construct()方法定义为静态(static)方法。
public abstract class ActorBuilder {
    protected static Actor actor = new Actor();

    public abstract void buildType();

    public abstract void buildSex();

    public abstract void buildFace();

    public abstract void buildCostume();

    public abstract void buildHairstyle();

    public static Actor construct(ActorBuilder ab) {

        ab.buildType();

        ab.buildSex();

        ab.buildFace();

        ab.buildCostume();

        ab.buildHairstyle();

        return actor;
    }
}
